package com.yhsimon.singleton.type5;

public class SingletonTest5 {
    public static void main(String[] args) {
        Singleton instance1 = Singleton.getInstance();
        Singleton instance2 = Singleton.getInstance();
        System.out.println("i1与i2实例是否相等："+(instance1==instance2));
        System.out.println("i1与i2的哈希值是否相同：i1的哈希值为 "+instance1.hashCode()+"  i2的哈希值为："+instance2.hashCode()+"---"+(instance1.hashCode()==instance2.hashCode()));

    }

}

//懒汉式 (线程不安全,同步代码块）  实际开发中，不能使用这种方式
class Singleton{
    private static Singleton instance;

    private Singleton(){}

    //并没有解决线程安全问题，但是这种同步并不能起到线程同步的作用。
    // 比如两个线程同时进入if语句  更不用说效率问题
    public static  Singleton getInstance(){
       if (instance==null){
           synchronized (Singleton.class){
               instance=new Singleton();
           }
       }
       return instance;
    }


}